This document contains information about technical issues, known bugs, and limitations for the Microsoft® Data Access Components version 2.6 Service Pack 1 (SP1).
The MDAC redistribution installation contains ADO, OLE DB, ODBC, the OLE DB providers and ODBC drivers for SQL Server and Oracle, SQL Server XML Extensions, and the Microsoft XML Parser. For information about the MDAC SDK, which includes documentation, samples, tools, headers, and libraries, see the section in this readme about MDAC technical issues.
Note: Version Number The original release of MDAC 2.6 used version identification number 2.60.xxxx.x (x depending on build number). For the release of MDAC 2.6 Service Pack 1, MDAC will use version identification number 2.61.xxxx.x.
Technical Issues, Known Bugs, and Limitations
Setup Issues
MDAC 2.6 Setup does not support overwriting languages. If you install US MDAC on a localized machine, then you will not be able to install the localized MDAC 2.6 on that machine. The reverse also applies. If you install a localized MDAC 2.6 on a US machine, then you will not be able to install the US MDAC 2.6 on that machine. This is different from previous versions of MDAC. In previous versions of MDAC, you could overwrite the US installation with a localized version. You can, however, install US MDAC on a localized machine on top of an earlier localized version of MDAC (such as MDAC 2.5).
Microsoft Jet and Visual FoxPro Drivers Not Included
MDAC 2.6 does not include Microsoft Jet, the Microsoft Jet OLE DB Provider, the Desktop Database Drivers ODBC Driver, or the Visual FoxPro ODBC driver. Microsoft Jet and the Microsoft Jet OLE DB Provider can be downloaded from http://microsoft.com. The Visual FoxPro driver is available through Visual FoxPro.
MDAC Minimum Supported Configuration
MDAC 2.6 is supported on the following configurations:
Return to MDAC Table of Contents
The following provides late-breaking or other information that supplements the Microsoft ADO documentation:
ADO/RDS Known Bugs and Limitations
Using the Bookmark Property
When you open a Recordset object, each of its records has a unique bookmark. To save the bookmark for the current record, assign the value of the Bookmark property to a Variant variable. To return to that record at any time after moving to a different record, set the Recordset object's Bookmark property (back) to the value of that Variant variable.
To avoid unpredicted behavior, always retrieve the Bookmark property into a Variant variable. Do not store it in anything other than a Variant. After retrieving the value from the Bookmark property, do not coerce the bookmark value to other data types. Do not attempt to fabricate your own bookmark based on how the provider seems to be handing them out.
Users should not expect bookmarks to be directly comparable—two bookmarks that refer to the same record may have different values. (See the CompareBookmarks method in the ADO Programmer's Reference.)
Prompt property value changes to adPromptNever after login dialog cancelled.
After canceling an ADO Connection dialog, the Connection object’s Prompt property is set back to its default. The work around is to always set the Prompt property, before calling Connection.Open.
Persisted XML with Pending Updates
When persisting Recordsets containing pending updates as XML, client cursors must be used to prevent errors when the pending updates are later applied to the database. Before calling Recordset.Save file.xml, adPersistXML
, make sure the CursorLocation property is set to adUseClient. Using client cursors instead of server cursors will ensure that the appropriate metadata is stored with the Recordset. This metadata is required when applying the pending updates to the database.
SET NOCOUNT ON does not raise concurrency error with ADO batch.
When two disconnected ADO Recordsets update the same row and column, and the SET NOCOUNT ON
statement has been executed on the connection, ADO does not raise an error when the second Recordset fails the batch update. The workaround is to ensure the SET NOCOUNT flag is OFF, prior to calling UpdateBatch.
Space in Connection string invokes default provider.
On some Win9x machines, inserting a space between the Connection string keyword “Provider” and the “=” as in “Provider =”, will cause ADO to default to the OLE DB Provider for ODBC and insert the following text into the connection string - "Provider=MSDASQL;”. The workaround to ensure that there is no space between “Provider” and “=”.
Potential Access Violation using OLE DB Simple Provider in Multi-Threaded or Free-Threaded Environment
Issue: The OLE DB Simple Provider (OSP) type library Simpdata.tlb is not installed during MDAC 2.6 installation. This causes the OSP to AV when used in a multi-threaded or free-threaded environment. Since standard marshalling requires a registered typelib, an Apartment Model OSP will AV when used in a free-threaded context. The specific component that fails is named “OSPShim”. Use this keyword when searching Microsoft web sites for information related to this AV.
Work-around 1
Change the calling context of the app to be apartment model by calling CoInitialize, instead of CoInitializeEx.
Work-around 2
Change the threading model of the OSP in the registry to be marked as "Both" instead of "Apartment" via the InprocServer32 setting.
Work-around 3
Download and register the missing type library.
c:\program files\microsoft platform sdk\lib
’
Note: Beginning with MDAC 2.5, the Data Access SDK has been integrated into the Platform SDK. The 2.6 SDK will be available both in the Platform SDK and as a separate download from http://www.microsoft.com/data.
C:\winnt\regtlib “c:\program files\Microsoft platform sdk\lib\simpdata.tlb”
You will now see the following message:
Registration of c:\program files\Microsoft platform sdk\lib\simpdata.tlb successful.
This completes the configuration. You are now ready to run the OSP under any threading model.
Return to MDAC Table of Contents
The following provides late-breaking or other information that supplements the Microsoft Jet and Replication Objects documentation:
JRO Known Bugs and Limitations
There are no technical issues at this time.
There are no known bugs or limitations at this time.
Return to MDAC Table of Contents
The following provides late-breaking or other information that supplements the Microsoft OLE DB documentation:
OLE DB Known Bugs and Limitations
IErrorLookup::GetErrorDescription
The documentation for the IErrorLookup::GetErrorDescription method states that if there are no error parameters, pdispparams will be null. This is not the case. This value will always be non-null.
There are no known bugs or limitations at this time.
Return to MDAC Table of Contents
The following provides late-breaking or other information that supplements the Microsoft OLE DB Cursor Service documentation:
OLE DB Provider for ODBC Technical Issues
OLE DB Provider for ODBC Known Bugs and Limitations
Update Functionality
Requested updates are handled using the IrowsetUpdate interface. When the Cursor Service’s IrowsetUpdate::Update method is called, the provider session object is identified (the ADO Connection,) and the changes to be made to each row are determined. The Cursor Service then submits changes to the provider in the form of SQL statements. For rows successfully updated, the underlying values are set, and the status is set to either DBROWSTATUS_S_OK or, for deleted rows, to DBROWSTATUS_E_DELETED. Error status values may be returned for rows where the update was not successful.
The Cursor Service updates its internal values before returning to the consumer. For any rows whose status is DBROWSTATUS_S_OK, the rowset discards any pending changes and updates its original values. For any rows whose status is DBROWSTATUS_E_DELETED, it deletes the row from its caches.
Optimistic Conflict Resolution
For each row that has changed in a rowset, the Cursor Service maintains a copy of the original row fetched from the provider. When the updates are sent to the server, the Cursor Service compares original values with the current values on the server to verify whether or not the row has changed since the data was fetched. The values are compared using a combination of key columns, row timestamps, changed fields, and sometimes the entire row. This behavior is controlled with the Update Criteria property.
If a conflict is detected, the status for that row changes to indicate an update conflict. You have the option to Refresh the current values for the conflicting row and compare them with the original row values and the changed values in the rowset. After you resolve the conflict, the update can be submitted again, this time using the current values to detect new update conflicts.
For additional information about updating and refreshing data, see the technical article “Optimistic Remote Updating in the Client Cursor Engine.”
There are no known bugs or limitations at this time.
Return to MDAC Table of Contents
The following provides late-breaking or other information that supplements the Microsoft OLE DB Provider for ODBC documentation:
OLE DB Provider for ODBC Technical Issues
OLE DB Provider for ODBC Known Bugs and Limitations
There are no technical issues at this time.
There are no known bugs or limitations at this time.
Return to MDAC Table of Contents
The following provides late-breaking or other information that supplements the Microsoft OLE DB Provider for SQL Server documentation:
OLE DB Provider for SQL Server Technical Issues
OLE DB Provider for SQL Server Known Bugs and Limitations
Dates stored in the new sql_variant type will be formatted according to the DBTIMESTAMP convention (yyyy-mm-dd hh:mm:ss).
There are no known bugs or limitations at this time.
Return to MDAC Table of Contents
The following provides late-breaking or other information that supplements the Microsoft SQL Server ODBC Driver and SQL Client Network Libraries documentation:
SQL Server ODBC Driver and SQL Client Network Libraries Technical Issues
SQL Server ODBC Driver and SQL Client Network Libraries Known Bugs and Limitations
There are no technical issues at this time.
There are no known bugs or limitations at this time.
Return to MDAC Table of Contents
The following provides late-breaking or other information that supplements the Microsoft OLE DB Provider for Oracle documentation:
OLE DB Provider for Oracle Technical Issues
OLE DB Provider for Oracle Known Bugs and Limitations
There are no technical issues at this time.
There are no known bugs or limitations at this time.
Return to MDAC Table of Contents
The following provides late-breaking or other information that supplements the Microsoft ODBC Driver for Oracle documentation:
ODBC Driver for Oracle Technical Issues
ODBC Driver for Oracle Known Bugs and Limitations
There are no technical issues at this time.
There are no known bugs or limitations at this time.
Return to MDAC Table of Contents
The following provides late-breaking or other information that supplements the Microsoft OLE DB Persistence Provider documentation:
You cannot save a parameterized, hierarchical Recordset in either ADTG or XML format.
There are no known bugs or limitations at this time.
Return to MDAC Table of Contents
The following provides late-breaking or other information that supplements the Microsoft ODBC documentation:
ODBC Known Bugs and Limitations
There are no technical issues at this time.
Chapter 11 of the Microsoft ODBC Version 2.6 states unclearly that SQL_ATTR_ROW_BIND_OFFSET_PTR is address to a SQLINTEGER buffer. The actual text reads, "To specify a bind offset, the application sets the SQL_ATTR_ROW_BIND_OFFSET_PTR statement attribute to the address of an SQLINTEGER buffer." The SQL_ATTR_ROW_BIND_OFFSET_PTR is actually a SQLUINTEGER * value that points to an offset added to the pointers to change binding of column data.
Return to MDAC Table of Contents
The following provides late-breaking or other information that supplements the Microsoft SQL Server XML Extensions documentation:
SQL Server XML Extensions Technical Issues
SQL Server XML Extensions Known Bugs and Limitations
There are no technical issues at this time.
There are no known bugs or limitations at this time.
Return to MDAC Table of Contents
The following provides late-breaking or other information that supplements the Microsoft XML Parser documentation:
Microsoft XML Parser Technical Issues
Microsoft XML Parser Known Bugs and Limitations
In addition to msxml2.dll, the files msxml2r.dll and msxml2a.dll are also installed. These are the Unicode and Ansi DLLs, respectively.
There are no known bugs or limitations at this time.
Return to MDAC Table of Contents
Information in this document, including URL and other Internet Web site references, is subject to change without notice and is provided for informational purposes only. The entire risk of the use or results of the use of this document remains with the user, and Microsoft Corporation makes no warranties, either express or implied. Unless otherwise noted, the example companies, organizations, products, people, and events depicted herein are fictitious, and no association with any real company, organization, product, person, or event is intended or should be inferred. Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in, or introduced into a retrieval system or transmitted in any form, or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Microsoft Corporation.
Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property.
© 1991-2000 Microsoft Corporation. All rights reserved.
Microsoft, MS-DOS, Windows, Windows NT, ActiveX, Visual Studio, Visual C++, Visual FoxPro, and MSDN are either registered trademarks or trademarks of Microsoft Corporation in the U.S.A. and/or other countries.
The names of actual companies and products mentioned herein may be the trademarks of their respective owners.